<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
<ui:composition template="../templates/layout.xhtml">
<ui:define name="title">Tabla Cliente</ui:define>
<ui:define name="content">
<p:spacer height="5px"/>
<p:panel>
    <h:outputText value="Tabla Cliente" styleClass="text_header_page"/>
</p:panel>
<p:spacer height="5px"/>
<h:form id="frmPrincipal">
    <!-- Panel de búsqueda-->
    <p:panel id="panelBusqueda" header="Búsqueda de Cliente" toggleable="true">
        <h:panelGrid id="gridBusqueda" columns="6">
            <p:spacer width="13px"/>
            <h:outputLabel for="cmbGrupoEmpresarial" value="Grupo Empresarial"/>
            <p:selectOneMenu id="cmbGrupoEmpresarial" converter="#{managerGrupoDTOConverter}"
                             value="#{maestroClienteJsfBean.filtroBusqueda.grupoEmpresarial}"
                             style="width:180px;">
                <f:selectItem itemLabel="Seleccione" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{maestroClienteJsfBean.cmbGrupoEmpresarial}"
                               var="grupoSelect"
                               itemLabel="#{grupoSelect.nombre}"
                               itemValue="#{grupoSelect}"/>
                <p:ajax event="change" update=":frmPrincipal:cmbSociedad :messages" process="@this"
                        listener="#{maestroClienteJsfBean.onSelectGrupoEmpresarial}"/>
            </p:selectOneMenu>

            <p:spacer width="13px"/>
            <h:outputLabel for="cmbSociedad" value="Sociedad"/>
            <p:selectOneMenu id="cmbSociedad" converter="#{managerSociedadDTOConverter}"
                             value="#{maestroClienteJsfBean.filtroBusqueda.sociedad}"
                             style="width:180px;">
                <f:selectItem itemLabel="Seleccione" itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{maestroClienteJsfBean.cmbSociedad}"
                               var="sociedadSelect"
                               itemLabel="#{sociedadSelect.nombre}"
                               itemValue="#{sociedadSelect}"/>
            </p:selectOneMenu>

            <p:spacer width="13px"/>
            <h:outputLabel value="Código Cliente"/>
            <p:inputText value="#{maestroClienteJsfBean.filtroBusqueda.clienteId}"
                         size="15" maxlength="15"/>
            <p:spacer width="13px"/>
            <h:outputLabel value="Razón Social"/>
            <p:inputText value="#{maestroClienteJsfBean.filtroBusqueda.razonSocial}"
                         size="15" maxlength="15"/>

            <p:spacer width="13px"/>
            <h:outputLabel value="Agrupación Cliente"/>
            <p:selectOneMenu value="#{maestroClienteJsfBean.filtroBusqueda.razonSocial}" effect="fade">
                <f:selectItem itemLabel="Seleccione" itemValue="" noSelectionOption="true"/>
                <f:selectItem itemLabel="Grupo I" itemValue="1"/>
            </p:selectOneMenu>
            <p:spacer width="13px"/>
            <h:outputLabel value="Estado"/>
            <p:selectOneMenu value="#{maestroClienteJsfBean.filtroBusqueda.estado}" effect="fade"
                    >
                <f:selectItem itemValue="" itemLabel="Todos"/>
                <f:selectItems value="#{maestroClienteJsfBean.allEstado}"
                               var="estadoSelect" itemLabel="#{estadoSelect.nombre}" itemValue="#{estadoSelect}"/>
            </p:selectOneMenu>

        </h:panelGrid>
        <p:spacer height="3px"/>

        <p:spacer height="3px"/>
        <h:panelGrid id="gridBusqueda3" columns="3">
            <p:commandButton ajax="true" value="Buscar" id="btnBuscar" icon="ui-icon-search"
                             actionListener="#{maestroClienteJsfBean.findAction}"
                             update=":frmPrincipal:panelResultados :frmPrincipal:panelDetalle :messages"/>
            <p:commandButton ajax="true" value="Limpiar" id="btnLimpiar" icon="ui-icon-refresh"
                             actionListener="#{maestroClienteJsfBean.cleanAction}"
                             update=":frmPrincipal:panelResultados :frmPrincipal:panelDetalle :frmPrincipal:panelBusqueda :messages"/>
        </h:panelGrid>
    </p:panel>

    <p:spacer height="10px"/>

    <!-- Panel de resultados (donde está la tabla)  -->
    <p:panel id="panelResultados" header="Resultados">
        <p:toolbar>

            <p:toolbarGroup align="left">
                <p:commandButton id="linkNuevo" value="Nuevo" ajax="true"
                                 actionListener="#{maestroClienteJsfBean.showNewDialog}"
                                 oncomplete="wvCreateDialog.show()" update=":createDialog"/>
                <p:commandButton id="editButton" value="Editar"
                                 actionListener="#{maestroClienteJsfBean.showEditDialog}"
                                 update=":createDialog :messages">
                    <f:attribute name="tableName" value="tablaRegistros"/>
                    <f:attribute name="dialogName" value="wvCreateDialog"/>
                </p:commandButton>
                <p:commandButton id="deleteButton" value="Eliminar"
                                 actionListener="#{maestroClienteJsfBean.showDeleteDialog}"
                                 update=":createDialog :messages">
                    <f:attribute name="tableName" value="tablaRegistros"/>
                    <f:attribute name="dialogName" value="wvDeleteDialog"/>
                </p:commandButton>
            </p:toolbarGroup>
        </p:toolbar>
        <p:dataTable id="tablaRegistros" value="#{maestroClienteJsfBean.registros}"
                     var="registro" rowKey="#{registro.clienteId}" paginator="true" rows="25"
                     paginatorPosition="bottom" emptyMessage="No existen registros"
                     selection="#{maestroClienteJsfBean.nuevoRegistro}"
                     selectionMode="single"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                     rowsPerPageTemplate="5,10,25,50">
            <p:ajax event="rowSelect" listener="#{maestroClienteJsfBean.onSelectDetail}"
                    update=":frmPrincipal:panelDetalle"/>
            <p:columnGroup type="header">
                <p:row>
                    <p:column headerText="Cod. Cliente"/>
                    <p:column headerText="Razón Social"/>
                    <p:column headerText="Estado"/>
                    <p:column headerText="Creado por"/>
                    <p:column headerText="Fecha Creación"/>
                </p:row>
            </p:columnGroup>

            <p:column style="text-align: left">
                <h:outputText value="#{registro.clienteId}"/>
            </p:column>

            <p:column style="text-align: left">
                <h:outputText value="#{registro.razonSocial}"/>
            </p:column>
            <p:column style="text-align: left">
                <h:outputText value="#{registro.estado.nombre}"/>
            </p:column>
            <p:column style="text-align: left">
                <h:outputText value="#{registro.creadoPor}"/>
            </p:column>
            <p:column style="text-align: left;width: 80px">
                <f:facet name="header">
                    <h:outputText value="Fecha Creación"/>
                </f:facet>
                <h:outputText value="#{registro.fechaCreacion}">
                    <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Lima" type="both"/>
                </h:outputText>
            </p:column>
        </p:dataTable>
    </p:panel>

    <br/>

    <p:panel id="panelDetalle" header="Sociedades" toggleable="true">
        <p:dataTable id="tablaDetalle" value="#{maestroClienteJsfBean.detalle}"
                     var="registroDetalle" rowKey="#{registroDetalle.sociedadId}" paginator="true" rows="25"
                     paginatorPosition="bottom" emptyMessage="No existen registros"
                     paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                     rowsPerPageTemplate="5,10,25,50">

            <p:column style="text-align: left">
                <f:facet name="header">
                    <h:outputText value="Grupo Empresarial"/>
                </f:facet>
                <h:outputText value="#{registroDetalle.grupoEmpresarialNombre}"/>
            </p:column>
            <p:column style="text-align: left">
                <f:facet name="header">
                    <h:outputText value="Código"/>
                </f:facet>
                <h:outputText value="#{registroDetalle.sociedadId}"/>
            </p:column>
            <p:column style="text-align: left">
                <f:facet name="header">
                    <h:outputText value="Sociedad"/>
                </f:facet>
                <h:outputText value="#{registroDetalle.nombre}"/>
            </p:column>
            <p:column style="text-align: left">
                <f:facet name="header">
                    <h:outputText value="Creado por"/>
                </f:facet>
                <h:outputText value="#{registroDetalle.creadoPor}"/>
            </p:column>
            <p:column style="text-align: left">
                <f:facet name="header">
                    <h:outputText value="Fecha Creación"/>
                </f:facet>
                <h:outputText value="#{registroDetalle.fechaCreacion}">
                    <f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Lima" type="both"/>
                </h:outputText>
            </p:column>
            <p:column style="text-align: center">
                <f:facet name="header">
                    <h:outputText value="Relacionado"/>
                </f:facet>
                <p:selectBooleanCheckbox value="#{registroDetalle.relacionadoBl}" disabled="true">
                </p:selectBooleanCheckbox>
            </p:column>
        </p:dataTable>
    </p:panel>
</h:form>
</ui:define>

<!-- Modals -->
<ui:define name="modal">
    <p:dialog closeOnEscape="true" id="createDialog" header="Nuevo Cliente" modal="true"   onShow="upperInput();"
              widgetVar="wvCreateDialog" resizable="false" showEffect="fade" hideEffect="fade">

        <p:ajax event="close" update=":frmPrincipal:panelResultados :createDialog"
                listener="#{maestroClienteJsfBean.handleDialogClose}"/>

        <p:panel id="NuevoRegistro">
            <h:form id="nuevoRegistroForm">
                <h:panelGrid id="gridBusquedaDialog" columns="3">

                    <h:outputLabel for="inputCodigo" value="Código Cliente"/>
                    <p:inputText id="inputCodigo" value="#{maestroClienteJsfBean.nuevoRegistro.clienteId}"
                                 size="15" maxlength="15" required="true" requiredMessage="*" style="width: 100px"/>
                    <p:message for="inputCodigo" display="text"/>

                    <h:outputLabel for="inputRazonSocial" value="Razón Social"/>
                    <p:inputText id="inputRazonSocial" value="#{maestroClienteJsfBean.nuevoRegistro.razonSocial}"
                                 size="50" maxlength="100" required="true" requiredMessage="*"/>
                    <p:message for="inputRazonSocial" display="text"/>

                    <h:outputLabel for="inputEstado" value="Estado"/>
                    <p:selectOneMenu id="inputEstado" value="#{maestroClienteJsfBean.nuevoRegistro.estado}" effect="fade"
                                     required="true" requiredMessage="*"
                            >
                        <f:selectItem itemValue="" itemLabel="Seleccione"/>
                        <f:selectItems value="#{maestroClienteJsfBean.allEstado}"
                                       var="estadoSelect" itemLabel="#{estadoSelect.nombre}" itemValue="#{estadoSelect}"/>
                    </p:selectOneMenu>
                    <p:message for="inputEstado" display="text"/>


                </h:panelGrid>
                <p:panel id="panelCrearDetalle" header="Sociedades">
                    <p:toolbar>
                        <p:toolbarGroup align="left">
                            <p:commandButton value="Agregar" ajax="true"
                                             actionListener="#{maestroClienteJsfBean.showNewDialogSeleccion}"
                                             oncomplete="wvSeleccionDialog.show()" update=":seleccionDialog"/>

                            <p:commandButton value="Eliminar" ajax="true"
                                             actionListener="#{maestroClienteJsfBean.deleteDetailAction}"
                                             update=":nuevoRegistroForm:tablaCuentaDetalle"/>
                        </p:toolbarGroup>
                    </p:toolbar>
                    <p:dataTable id="tablaCuentaDetalle" value="#{maestroClienteJsfBean.nuevoRegistro.clienteSociedad}"
                                 var="item" rowKey="#{item.sociedadId}" paginator="true" rows="25"
                                 selection="#{maestroClienteJsfBean.nuevoRegistroDetalle}"
                                 selectionMode="single"
                                 paginatorPosition="bottom" emptyMessage="No existen registros"
                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 rowsPerPageTemplate="5,10,25,50">

                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Grupo Empresarial"/>
                            </f:facet>
                            <h:outputText value="#{item.sociedad.grupoEmpresarial.nombre}"/>
                        </p:column>
                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Código"/>
                            </f:facet>
                            <h:outputText value="#{item.sociedadId}"/>
                        </p:column>
                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Sociedad"/>
                            </f:facet>
                            <h:outputText value="#{item.sociedad.nombre}"/>
                        </p:column>
                        <p:column headerText="Relacionado" style="text-align: center">
                            <p:selectBooleanCheckbox value="#{item.relacionadoBl}">
                            </p:selectBooleanCheckbox>
                        </p:column>
                    </p:dataTable>
                </p:panel>
                <p:spacer height="3px"/>
                <h:panelGrid id="gridBusqueda3Dialog" columns="2" styleClass="centered">
                    <p:commandButton ajax="true" value="Guardar" id="btnGuardar"
                                     actionListener="#{maestroClienteJsfBean.persistAction}"
                                     update=":frmPrincipal:panelResultados :messages  :NuevoRegistro">
                        <f:attribute name="dialogName" value="wvCreateDialog"/>
                    </p:commandButton>
                    <p:commandButton ajax="true" value="Cancelar" id="btnCancelar" onclick="wvCreateDialog.hide()"
                                     type="button"
                                     immediate="true" process="@none"/>
                </h:panelGrid>
            </h:form>
        </p:panel>
    </p:dialog>

    <p:dialog closeOnEscape="true" id="seleccionDialog" header="Sociedades"  modal="true" onShow="upperInput();"
              widgetVar="wvSeleccionDialog" resizable="false" showEffect="fade" hideEffect="fade">
        <p:panel id="Seleccionar">
            <h:form id="frmSeleccionarSociedad">
                <!-- Panel de búsqueda-->
                <p:panel id="seleccionarPanelBusqueda" header="Búsqueda de Sociedades">
                    <h:panelGrid id="gridBusqueda" columns="9">
                        <h:outputLabel for="cmbGrupoEmpresarial" value="Grupo Empresarial"/>
                        <p:selectOneMenu id="cmbGrupoEmpresarial" converter="#{managerGrupoDTOConverter}"
                                         value="#{maestroClienteJsfBean.filtroPick.grupoEmpresarial}"
                                         style="width:180px;">
                            <f:selectItem itemLabel="Todos" itemValue="" noSelectionOption="true"/>
                            <f:selectItems value="#{maestroClienteJsfBean.cmbGrupoEmpresarial}"
                                           var="grupoSelect"
                                           itemLabel="#{grupoSelect.nombre}"
                                           itemValue="#{grupoSelect}"/>
                        </p:selectOneMenu>
                    </h:panelGrid>
                    <p:spacer height="3px"/>

                    <p:spacer height="3px"/>
                    <h:panelGrid id="gridBusqueda3Seleccionar" columns="3">
                        <p:commandButton ajax="true" value="Buscar" id="btnBuscar" icon="ui-icon-search"
                                         actionListener="#{maestroClienteJsfBean.findActionSelect}"
                                         update=":frmSeleccionarSociedad:panelResultadosSeleccionar :messages"/>
                        <p:commandButton ajax="true" value="Limpiar" id="btnLimpiar" icon="ui-icon-refresh"
                                         actionListener="#{maestroClienteJsfBean.cleanActionSelect}"
                                         update=":frmSeleccionarSociedad:panelResultadosSeleccionar :messages"/>
                    </h:panelGrid>
                </p:panel>

                <p:spacer height="10px"/>

                <!-- Panel de resultados (donde está la tabla)  -->
                <p:panel id="panelResultadosSeleccionar" header="Resultados">
                    <p:toolbar>

                        <p:toolbarGroup align="left">
                            <p:commandButton value="Seleccionar" ajax="true"
                                             actionListener="#{maestroClienteJsfBean.seleccionar}"
                                             update=":NuevoRegistro">
                                <f:attribute name="dialogName" value="wvSeleccionDialog"/>
                            </p:commandButton>
                        </p:toolbarGroup>
                    </p:toolbar>


                    <p:dataTable id="tablaRegistrosSeleccionar" value="#{maestroClienteJsfBean.detallePickList}"
                                 var="sociedadSelect" rowKey="#{sociedadSelect.id}" paginator="true" rows="10"
                                 paginatorPosition="bottom" emptyMessage="No existen registros"
                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                 rowsPerPageTemplate="5,10,25,50">
                        <p:column headerText="" style="text-align: center">
                            <p:selectBooleanCheckbox value="#{sociedadSelect.seleccionado}">
                            </p:selectBooleanCheckbox>
                        </p:column>
                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Grupo Empresarial"/>
                            </f:facet>
                            <h:outputText value="#{sociedadSelect.grupoEmpresarialNombre}"/>
                        </p:column>
                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Código"/>
                            </f:facet>
                            <h:outputText value="#{sociedadSelect.sociedadId}"/>
                        </p:column>
                        <p:column style="text-align: left">
                            <f:facet name="header">
                                <h:outputText value="Sociedad"/>
                            </f:facet>
                            <h:outputText value="#{sociedadSelect.nombre}"/>
                        </p:column>
                    </p:dataTable>
                </p:panel>
            </h:form>
        </p:panel>
    </p:dialog>

    <p:confirmDialog id="deleteDialog" widgetVar="wvDeleteDialog" message="#{messages.label_delete_record}"
                     appendToBody="true"
                     showEffect="fade" hideEffect="fade" header="#{messages.label_confirm_deletion}"
                     severity="alarm">
        <h:form id="deleteForm">
            <p:commandButton value="#{messages.label_yes}" actionListener="#{maestroClienteJsfBean.deleteAction}"
                             update=":frmPrincipal:panelResultados :frmPrincipal:panelDetalle :messages"
                             style="text-align:center;"
                             oncomplete="wvDeleteDialog.hide()"/>
            <p:commandButton value="#{messages.label_no}" onclick="wvDeleteDialog.hide()" type="button"
                             style="text-align:center;"
                             immediate="true" process="@none"/>
        </h:form>
    </p:confirmDialog>

</ui:define>
</ui:composition>
</html>